package cn.cdeden.system.controller.system;

import cn.cdeden.common.core.domain.R;
import cn.cdeden.system.domain.dto.FilesLabelDto;
import cn.cdeden.system.domain.dto.FilesLabelQueryParam;
import cn.cdeden.system.domain.enums.FileLabelTypeEnums;
import cn.cdeden.system.service.FilesUserLabelService;
import cn.dev33.satoken.annotation.SaCheckPermission;
import io.undertow.util.BadRequestException;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Set;

/**
 * 标签: 文档管理
 */
@RestController
@RequiredArgsConstructor
//@Api(tags = "标签: 文档管理")
@RequestMapping("/api/filesUserLabel")
public class FilesLabelController {

    private final FilesUserLabelService filesUserLabelService;


    /**
     * 查询标签详情
     * @param id
     * @return
     */
    @GetMapping(value = "/get/{id}")
//    @Log("查询标签详情")
//    @ApiOperation("查询标签详情")
    public R queryById(@PathVariable @NotNull Long id) {
        return R.ok(filesUserLabelService.findById(id));
//        return BaseRespResult.successResult(filesUserLabelService.findById(id));
    }


    /**
     * @Description // 修改企业文档标签
     * @param resources
     * @return com.cdyd.ecm.resp.BaseRespResult
     **/
    @PostMapping("/updateSys")
//    @Log("修改企业文档标签")
//    @ApiOperation("修改企业文档标签")
//    @PreAuthorize("@el.check('filesUserLabel:edit')")
    @SaCheckPermission("system:filesUserLabel:edit")
    public R updateSys(@RequestBody FilesLabelDto resources) throws BadRequestException {
//        return filesUserLabelService.updateById(resources) ? BaseRespResult.success() : BaseRespResult.errorResult("修改失败");
        return filesUserLabelService.updateById(resources) ? R.ok() : R.fail("修改失败");
    }


    /**
     * 删除企业文档标签
     * @param ids
     * @return
     */
    @PostMapping("/deleteSys")
//    @Log("删除企业文档标签")
//    @ApiOperation("删除企业文档标签")
//    @PreAuthorize("@el.check('filesUserLabel:del')")
    @SaCheckPermission("system:filesUserLabel:del")
    public R deleteSys(@RequestBody Set<Long> ids) {
        filesUserLabelService.deleteByIdsAndType(ids,FileLabelTypeEnums.sys.getCode());
        return R.ok();
    }

    //=======================================企业标签================================

    /**
     * 查询企业文档标签
     * @param query
     * @return
     */
    @GetMapping("/querySys")
//    @Log("查询企业文档标签")
//    @ApiOperation("查询企业文档标签")
    public R<List<FilesLabelDto>> querySys(FilesLabelQueryParam query) {
//        List<FilesLabelDto> filesLabelDtos = filesUserLabelService.queryAllSys(query);
        return R.ok(filesUserLabelService.queryAllSys(query));
//        return BaseRespResult.successResult(filesUserLabelService.queryAllSys(query));
    }




    /**
     * @Description // 新增企业文档标签
     * @param resources
     * @return com.cdyd.ecm.resp.BaseRespResult
     **/
    @PostMapping("/createSys")
//    @Log("新增企业文档标签")
//    @ApiOperation("新增企业文档标签")
    @SaCheckPermission("system:filesUserLabel:add")
//    @PreAuthorize("@el.check('filesUserLabel:add')")
    public R createSys(@Valid @RequestBody FilesLabelDto resources) throws BadRequestException {
        resources.setLabelType(FileLabelTypeEnums.sys.getCode());
        if ( resources.getParentId() == null) {
            resources.setParentId(0L);
        }
        FilesLabelDto insert = filesUserLabelService.insert(resources);
        return insert != null ? R.ok(insert) : R.fail("添加失败");
//        return insert != null ? BaseRespResult.successResult(insert) : BaseRespResult.errorResult("添加失败");
    }






}
